#include "mypushbutton.h"
#include <QDebug>
#include <QPropertyAnimation>
#include <QTimer>
//MyPushButton::MyPushButton(QWidget *parent) : QPushButton(parent)
//{

//}

MyPushButton::MyPushButton(QString normalImg, QString pressImg)//声明和实现不能同时传参
{
    this->normalImgPath=normalImg;
    this->pressImgPath=pressImg;
    QPixmap pix;
    bool ret=pix.load(normalImg);
    if(!ret)
    {
        qDebug()<<"正常按钮图片未加载成功！";
        return;
    }
    //设置图片(按钮)固定大小
    this->setFixedSize(pix.width(),pix.height());
    //设置为不规则图片样式
    this->setStyleSheet("QPushButton{border:0px;}");
    //设置图标
    this->setIcon(pix);
    //设置图标大小
    this->setIconSize(QSize(pix.width(),pix.height()));

}

void MyPushButton::zoom_down()
{
    //创建动画对象
    QPropertyAnimation *animation=new QPropertyAnimation(this,"geometry");//被施加动画对象 动画方式
    //设置动画事件
    animation->setDuration(500);
    //起始位置
    animation->setStartValue(QRect(this->x(),this->y(),this->width(),this->height()));
    //结束位置
    animation->setEndValue(QRect(this->x(),this->y()+10,this->width(),this->height()));
    //设置弹跳曲线
    animation->setEasingCurve(QEasingCurve::OutBounce);
    //执行动画
    animation->start();

}

void MyPushButton::zoom_up()
{
    //创建动画对象
    QPropertyAnimation *animation=new QPropertyAnimation(this,"geometry");//被施加动画对象 动画方式
    //设置动画事件
    animation->setDuration(500);
    //起始位置
    animation->setStartValue(QRect(this->x(),this->y()+10,this->width(),this->height()));
    //结束位置
    animation->setEndValue(QRect(this->x(),this->y(),this->width(),this->height()));
    //设置弹跳曲线
    animation->setEasingCurve(QEasingCurve::OutBounce);
    //执行动画
    animation->start();
}

void MyPushButton::mousePressEvent(QMouseEvent *e)
{
    if(this->pressImgPath!="")//传入了图片
    {
        QPixmap pix;
        bool ret=pix.load(pressImgPath);
        if(!ret)
        {
            qDebug()<<"正常按钮图片未加载成功！";
            return;
        }
        //设置图片(按钮)固定大小
        this->setFixedSize(pix.width(),pix.height());
        //设置为不规则图片样式
        this->setStyleSheet("QPushButton{border:0px;}");
        //设置图标
        this->setIcon(pix);
        //设置图标大小
        this->setIconSize(QSize(pix.width(),pix.height()));
    }

    //父类处理其它事件
    return QPushButton::mousePressEvent(e);
}

void MyPushButton::mouseReleaseEvent(QMouseEvent *e)
{
    if(this->pressImgPath!="")//传入了图片
    {
        QPixmap pix;
        bool ret=pix.load(normalImgPath);
        if(!ret)
        {
            qDebug()<<"正常按钮图片未加载成功！";
            return;
        }
        //设置图片(按钮)固定大小
        this->setFixedSize(pix.width(),pix.height());
        //设置为不规则图片样式
        this->setStyleSheet("QPushButton{border:0px;}");
        //设置图标
        this->setIcon(pix);
        //设置图标大小
        this->setIconSize(QSize(pix.width(),pix.height()));
    }

    //父类处理其它事件
    return QPushButton::mouseReleaseEvent(e);
}


//void MyPushButton::changeIcon()
//{
//    this->setIcon(QIcon(pressImgPath));
//    QTimer::singleShot(50,this,[=]()
//    {
//        this->setIcon(QIcon(normalImgPath));
//    });

//}
